const mysql = require('mysql')
const config = require('../config/default')

const db = mysql.createConnection({
  host: config.database.HOST,
  user: config.database.USER,
  password: config.database.PASSWORD,
  database: config.database.WALLTS
})

db.connect((err) => {
  if (err) {
    console.error('连接数据库失败:', err)
    return
  }
  console.log('成功连接到数据库')
})


// 创建数据库表
const pool = mysql.createPool({
  host: config.database.HOST,
  user: config.database.USER,
  password: config.database.PASSWORD,
  database: config.database.WALLTS
})

// 通过pool.query
let bdbs = (sql, values) => {
  return new Promise((resolve, reject) => { 
    db.query(sql, values, (err, result) => {
      // 插入失败
      if (err) reject(err)
      // 成功
      resolve(result)
    })
  })
}


// 通过pool.getConnection 获取链接
let query = (sql, values) => {
  return new Promise((resolve, reject) => {
    pool.getConnection((err, connection) => {
      if(err) {
        reject(err)
      } else {
        connection.query(sql, values, (err, result) => {  
          if(err) {
            reject(err)
          } else {
            resolve(result)
          }
          // 释放链接
          connection.release()
        })
      }
    })
  })
}

// 创建数据库指令
let WALLTS = `create database if not exists WALLTS default charset utf8 collate utf8_general_ci;`

// 执行创建数据库
let createDataBase = (sql) => { 
  return bdbs(db, [])
}


// 创建数据表
// 留言/照片
let walls = `CREATE TABLE IF NOT EXISTS walls (
  id INT NOT NULL AUTO_INCREMENT,
  type INT NOT NULL COMMENT '类型 0 信息 1 图片',
  message VARCHAR(1000) COMMENT '留言',
  name VARCHAR(100) NOT NULL COMMENT '用户名',
  userId VARCHAR(100) NOT NULL COMMENT '创建者ID',
  moment VARCHAR(100) NOT NULL COMMENT '时间',
  label INT NOT NULL COMMENT '标签',
  color INT COMMENT '颜色',
  imgUrl VARCHAR(100) COMMENT '图片路径',
  PRIMARY KEY (id)
)`

// 留言反馈
// 创建留言反馈表
let feedbacks = `CREATE TABLE IF NOT EXISTS feedbacks (
  id INT NOT NULL AUTO_INCREMENT,
  WaLLId INT NOT NULL COMMENT '墙留言ID',
  userId VARCHAR(100) NOT NULL COMMENT '反馈者ID',
  tyPe INT NOT NULL COMMENT '反馈类型 0 喜欢 1 举报 2 撤销',
  moment VARCHAR(100) NOT NULL COMMENT '时间',
  PRIMARY KEY (id)
)`


//留言评论
let comments = `CREATE TABLE IF NOT EXISTS comments (
  id INT NOT NULL AUTO_INCREMENT,
  WaLLId INT NOT NULL COMMENT '墙留言ID',
  userId VARCHAR(100) NOT NULL COMMENT '评论者ID',
  imgurL VARCHAR(100) COMMENT '头像路径',
  comment VARCHAR(1000) COMMENT '评论内容',
  name VARCHAR(100) NOT NULL COMMENT '用户名',
  moment VARCHAR(100) NOT NULL COMMENT '时间',
  PRIMARY KEY (id)
)`

// 创建表
let createTable = (sql) => {
  return query(sql, [])
}

// 执行创建
async function create() {
  await createDataBase(WALLTS)
  createTable(walls)
  createTable(feedbacks)
  createTable(comments)
}


// 新建walls数据
exports.insertWalls = (value) => {
  let _sql = `insert into walls set type=?,message=?,name=?,userId=?,moment=?,label=?,color=?,imgUrl=?;`
  return query(_sql, value)
}


// create()